package base.io
{
	import flash.utils.ByteArray;

	public class ByteBuffer extends ByteArray
	{
		public function ByteBuffer()
		{
			super();
		}
		
		/**
		 * 将缓冲区的当前位置和界限之间的字节（如果有）复制到缓冲区的开始处。即将索引 p = position() 处的字节复制到索引 0 处，
		 * 将索引 p + 1 处的字节复制到索引 1 处，依此类推，直到将索引 limit() - 1 处的字节复制到索引 n = limit() - 1 - p 处。
		 * 然后将缓冲区的位置设置为 n+1，并将其界限设置为其容量。如果已定义了标记，则丢弃它。  
		 */
		public function compact():void
		{
			var ba:ByteArray=new ByteArray();
			readBytes(ba);
			clear();
			writeBytes(ba);
			ba.clear();
			ba=null;
		}
		
		/**
		 *反转此缓冲区。将位置设置为 0。 
		 */		
		public function flip():void
		{
			position=0;
		}
		
		/**
		 * 告知在当前位置和限制之间是否有元素
		 * @return 当且仅当此缓冲区中至少还有一个元素时返回 true
		 */		
		public function hasRemaining():Boolean
		{
			return bytesAvailable>0;
		}
		
		override public function clear():void
		{
			super.clear();
		}
	}
}